package cn.achao.csr.system.service;

import cn.achao.csr.api.model.dto.RegisterDTO;
import cn.achao.csr.api.model.entity.LoginUser;
import cn.achao.csr.api.model.entity.SysUser;
import cn.achao.csr.base.constant.enums.ThirdAuthEnum;

import java.util.List;
import java.util.Map;

/**
* @author achao
* @description 针对表【sys_user(用户表)】的数据库操作Service
* @createDate 2025-01-13 22:54:19
*/
public interface SysUserService {

    /**
     * 注册
     *
     * @param req
     * @return
     */
    SysUser register(RegisterDTO req);

    /**
     * 根据用户名查询用户信息
     * @param userAccount
     * @return
     */
    SysUser selectUserByUserAccount(String userAccount);

    /**
     * 根据支付宝openId查询用户信息
     * @param openId
     * @return
     */
    SysUser infoByZfbOpenId(String openId);

    /**
     * 获取用户数据权限
     * @param loginUser
     */
    void getUserPermissions(LoginUser loginUser);

    /**
     * 获取用户角色集合
     * @param loginUser
     */
    void getUserRoles(LoginUser loginUser);

    /**
     * 第三方授权
     *
     * @param userAccount
     * @param openId
     * @param userInfo
     * @param thirdAuth
     * @return
     */
    SysUser updateOpenId(String userAccount, String openId, String userInfo, ThirdAuthEnum thirdAuth);

    /**
     * 判断是否存在openId
     * @param openId
     * @param thirdAuthEnum
     * @return
     */
    Boolean isExistOpenId(String openId, ThirdAuthEnum thirdAuthEnum);

    /**
     * 根据ids批量查询用户信息
     * @param userIds
     * @return
     */
    Map<Long,SysUser> getBatchByIds(List<Long> userIds);
}
